//
//  Person.h
//  08_iOS9新特性(Nullabilty , 泛型, _Kindof)
//
//  Created by dllo on 16/7/13.
//  Copyright © 2016年 LST. All rights reserved.
//

#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface Person : NSObject
// Nullability (只能在对象类型上)是在编译层次上加上了一些改动
// nonnull 声明的属性不能为空(getter 和 setter)
//@property (nonnull, nonatomic, copy) NSString *name;
// __nonnull 在声明属性的类型后加__nonnull效果一样
@property (nonatomic, copy) NSString *__nonnull name;

// nullable 声明的属性, 是可以为空的 (getter 和 setter方法)
//@property (nullable, nonatomic, copy) NSString *sex;
// __nullable 在声明属性的类型后加__nullable
@property (nonatomic, copy) NSString * __nullable sex;
// 对null_resettable方法 setter 方法是nullable getter方法是nonnull
// 举例 UIViewController中的View属性
@property (null_resettable, nonatomic, strong) NSArray *friends;
@property (nonatomic, strong) NSDictionary *dic;
// NS_ASSUME_NONNULL_BEGIN
// NS_ASSUME_NONNULL_END
// 一般应用于头文件.h 一般讲声明包含起来
// 针对所有属性 添加nonnull 修饰
// 也就是说, 除了nullable 和 null_resttable需要加修饰, 其他的都不需要
// 不可以像下面这样做
// @property (nonatomic, assign) NSInteger number;



@end
NS_ASSUME_NONNULL_END
